export default class BaseCacheData {
  /**
   * 标准对象数组 =》 ForeignKeyModel
   * 一般用于将一个对象数组转为组件内可以使用的selectSource
   * **/
  toForeignKeyDataList(
    data: Array<any>,
    verboseColumn: string,
    keyColumn: string
  ) {
    return data.map((x) => {
      let fk: ForeignKeyModel = {
        text: x[verboseColumn],
        value: x[keyColumn],
      };
      return fk;
    });
  }

  /**
   * 扁平数据结构 =》 树形结构
   * **/
  toTree(
    data: Array<any>,
    idColumn: string,
    connectColumn: string,
    verboseColumn: string
  ): Array<any> {
    let ret: Array<any> = [];
    data.forEach((item) => {
      item["text"] = item[verboseColumn];
      item["value"] = item[idColumn];
      item.children = data.filter((x) => x[connectColumn] === item[idColumn]);
      if (item.children.length > 0) {
        this.toTree(item.children, idColumn, connectColumn, verboseColumn);
      }
      if (
        item[connectColumn] === "0" ||
        item[connectColumn] == null ||
        item[connectColumn] === "-1"
      ) {
        ret.push(item);
      }
    });
    return ret;
  }

  /**
   * 数据更新方法 =》 用于更新数据，一般被实现为从后端重新拉取
   * **/
  update() {
    // 需要子类实现，没有更新的需求则可不实现
  }
}
